<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=no">
  <meta name="description" content="API docs for the allowInterop function from the dart:js library, for the Dart programming language.">
  <title>allowInterop function - dart:js library - Dart API</title>
  <!-- required because all the links are pseudo-absolute -->
  <base href="..">

  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500,400i,400,300|Source+Sans+Pro:400,300,700" rel="stylesheet">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  <link rel="stylesheet" href="static-assets/github.css">
  <link rel="stylesheet" href="static-assets/styles.css">
  <link rel="icon" href="static-assets/favicon.png">
  <!-- header placeholder -->
</head>

<body>

<div id="overlay-under-drawer"></div>

<header id="title">
  <button id="sidenav-left-toggle" type="button">&nbsp;</button>
  <ol class="breadcrumbs gt-separated dark hidden-xs">
    <li><a href="index.html">flutter_form_builder</a></li>
    <li><a href="dart-js/dart-js-library.html">dart:js</a></li>
    <li class="self-crumb">allowInterop&lt;<wbr><span class="type-parameter">F extends Function</span>&gt; function</li>
  </ol>
  <div class="self-name">allowInterop</div>
  <form class="search navbar-right" role="search">
    <input type="text" id="search-box" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search...">
  </form>
</header>

<main>

  <div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
    <header id="header-search-sidebar" class="hidden-l">
      <form class="search-sidebar" role="search">
        <input type="text" id="search-sidebar" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search...">
      </form>
    </header>
    
    <ol class="breadcrumbs gt-separated dark hidden-l" id="sidebar-nav">
      <li><a href="index.html">flutter_form_builder</a></li>
      <li><a href="dart-js/dart-js-library.html">dart:js</a></li>
      <li class="self-crumb">allowInterop&lt;<wbr><span class="type-parameter">F extends Function</span>&gt; function</li>
    </ol>
    
    <h5>dart:js library</h5>
    <ol>
      <li class="section-title"><a href="dart-js/dart-js-library.html#classes">Classes</a></li>
      <li><a href="dart-js/JavaScriptObject-class.html">JavaScriptObject</a></li>
      <li><a href="dart-js/JsArray-class.html">JsArray</a></li>
      <li><a href="dart-js/JsFunction-class.html">JsFunction</a></li>
      <li><a href="dart-js/JsObject-class.html">JsObject</a></li>
    
    
    
    
      <li class="section-title"><a href="dart-js/dart-js-library.html#properties">Properties</a></li>
      <li><a href="dart-js/context.html">context</a></li>
    
      <li class="section-title"><a href="dart-js/dart-js-library.html#functions">Functions</a></li>
      <li><a href="dart-js/allowInterop.html">allowInterop</a></li>
      <li><a href="dart-js/allowInteropCaptureThis.html">allowInteropCaptureThis</a></li>
    
    
    
    </ol>
  </div><!--/.sidebar-offcanvas-left-->

  <div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
      <div><h1><span class="kind-function">allowInterop&lt;<wbr><span class="type-parameter">F extends Function</span>&gt;</span> function </h1></div>

    <section class="multi-line-signature">
        <span class="returntype">F</span>
                <span class="name ">allowInterop</span>
&lt;<wbr><span class="type-parameter">F extends Function</span>&gt;(<wbr><span class="parameter" id="allowInterop-param-f"><span class="type-annotation">F</span> <span class="parameter-name">f</span></span>)
    </section>
    <section class="desc markdown">
      <p>Returns a wrapper around function <code>f</code> that can be called from JavaScript
using <code>package:js</code> JavaScript interop.</p>
<p>The calling conventions in Dart2Js differ from JavaScript and so, by
default, it is not possible to call a Dart function directly. Wrapping with
<code>allowInterop</code> creates a function that can be called from JavaScript or
Dart. The semantics of the wrapped function are still more strict than
JavaScript, and the function will throw if called with too many or too few
arguments.</p>
<p>Calling this method repeatedly on a function will return the same result.</p>
    </section>
    
    <section class="summary source-code" id="source">
      <h2><span>Implementation</span></h2>
      <pre class="language-dart"><code class="language-dart">F allowInterop&lt;F extends Function&gt;(F f) {
  if (JS(&#39;bool&#39;, &#39;typeof(#) == &quot;function&quot;&#39;, f)) {
    &#47;&#47; Already supports interop, just use the existing function.
    return f;
  } else {
    return _convertDartFunctionFast(f);
  }
}</code></pre>
    </section>

  </div> <!-- /.main-content -->

  <div id="dartdoc-sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
  </div><!--/.sidebar-offcanvas-->

</main>

<footer>
  <span class="no-break">
    flutter_form_builder
      3.8.2
  </span>

  <!-- footer-text placeholder -->
</footer>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="static-assets/typeahead.bundle.min.js"></script>
<script src="static-assets/highlight.pack.js"></script>
<script src="static-assets/URI.js"></script>
<script src="static-assets/script.js"></script>
<!-- footer placeholder -->

</body>

</html>
